A container, such as those of the DOCKER system, is a stand-alone software package that can run isolated on a shared operating system. Containers are quickly becoming one of the most important tools in DevOps as well as production environments both in the Enterprise and the Datacenters. However, container orchestration, scheduling, and performance present challenges across the industry. For instance, determining what containers to start when and what to migrate where is a problem which requires proper scheduling. These decisions are dependent on factors like when multiple application containers are running simultaneously with different workloads, the throughput of some applications may be compromised significantly compared to other application containers (e.g., there may be an unfair throughput of some application workloads). Such unfair throughput is generally undesirable by the user and may violate service provider service level agreements (SLAs). Additionally, the performance benefits obtained by simultaneously operating multiple instances of the same application (i.e., a homogenous environment) and simultaneously operating multiple instances of different applications (i.e., a heterogeneous environment) may vary significantly with related art containers. Moreover, the performance of I/O intensive dockerized workloads on recent innovations in storage and disk systems, such as high performance non-volatile memory express (NVMe) and solid state drives (SSDs), are not well understood and have not been investigated. The initiation time for containers is negligible when compared to that of virtual machines, and therefore it is not required to start all containers at the beginning, but the decision of when to start which container affects the performance. Therefore, it is beneficial to have container orchestration or scheduling.